/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import DAO.SolicitudDAO;
import Entidad.Solicitud;
import java.sql.Connection;
import java.sql.SQLException;

/**
 *
 * @author alexis
 */
public class ControlSolicitud {
    
     SolicitudDAO solicitudDAO = new SolicitudDAO();
     
     public int siguienteNumeroSolicitud() throws SQLException{
        ConexionDB conexionBaseDeDatos = new ConexionDB();
        Connection conexion = conexionBaseDeDatos.establecerConexion();
        try{
            return solicitudDAO.siguienteNumeroSolicitud(conexion);
        } finally {
            conexion.close();
        }
    }
    
     private boolean camposValidos(Solicitud solicitud) throws Exception{          
         
            if(solicitud.getIdCliente()==0)
                throw new Exception("Debe seleccionar algún cliente.");
              else if (solicitud.getLugarOrigen().length()== 0 ) {
                throw new Exception("Se debe ingresar el lugar de origen.");
            } else if (solicitud.getRegistroEnvio().length() == 0) {
                throw new Exception("El campo registro envío es obligatorio.");
            } else if (solicitud.getQuienRecibe().length() == 0 ) {
                throw new Exception("Se debe ingresar el nombre del responsable.");
            } else if (contieneSoloNumeros(solicitud.getQuienRecibe()) ) {
                throw new Exception("El nombre del responsable no puede constar de solo numeros.");
            } else if (solicitud.getControlCobros().endsWith("#")) {               
                throw new Exception("Se debe ingresar el numero de la factura.");
            } else if (solicitud.getOrdenServicio().endsWith("#")) {             
                throw new Exception("Se debe ingresar el numero de orden.");
            } 
           return true;
     }
     
     public boolean registrarSolicitud(Solicitud solicitud) throws Exception{
            
            if(camposValidos(solicitud)){      
            ConexionDB conexionBaseDeDatos = new ConexionDB();
            Connection conexion = conexionBaseDeDatos.establecerConexion();   
            solicitudDAO.create(solicitud, conexion);
            return true;
            }
        return false;
    }
    private boolean contieneSoloNumeros(String cadena){
            for (int i = 0; i < cadena.length(); i++) {
                if(!Character.isDigit(cadena.charAt(i))) 
                return false;
            }
        return true;
    }
}
